package com.yanxu.threadattribute;

/**
 * @author 折戟沉沙铁未销
 * @version V1.0
 * @date 2025/1/18-2025
 * @Description: 守护线程
 *   thread.setDaemon(true);  //设置守护线程
 */
public class ThreadDaemon {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(new Runnable() {
            public void run() {
                try {
                    for (int i = 0; i < 1000; i++) {
                        System.out.println(i);
                        Thread.sleep(1000);
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        thread.setDaemon(true);   //手动将线程设置为 守护线程了
        thread.start();

        Thread.sleep(5000);
        System.out.println("main 线程执行完毕了");

        /*
        * 设置守护线程：
        *   thread.setDaemon(true);
        *
        * 正常情况下，main 线程很快就运行结束了。
        * 但是 子线程运行的比较慢，因此他会慢慢 的将 0~1000 全部打印完毕，整个java 进程才会运行完毕。
        *
        * 但是，因为我们将 子线程 设置成了守护线程，
        * 因此。只要主线程运行结束了，整个 java进程就结束了。
        *
        *
        * */

        //       执行结果：
        //        Connected to the target VM, address: '127.0.0.1:56625', transport: 'socket'
        //        0
        //        1
        //        2
        //        3
        //        4
        //        main 线程执行完毕了
        //        Disconnected from the target VM, address: '127.0.0.1:56625', transport: 'socket'
        //
        //        Process finished with exit code 0


    }
}